﻿using System;
using System.Collections.Generic;
using UnityEngine;
using XUtliPoolLib;

namespace XMainClient
{
    // Token: 0x02000AFC RID: 2812
    internal class XAIDataRelated : XSingleton<XAIDataRelated>
    {
        // Token: 0x0600A5F5 RID: 42485 RVA: 0x001CF46C File Offset: 0x001CD66C
        public int GetProfIndex(GameObject go)
        {
            XEntity entity = XSingleton<XEntityMgr>.singleton.GetEntity(ulong.Parse(go.transform.name));
            int result;
            if (entity == null)
            {
                result = -1;
            }
            else
            {
                int num = (int)(entity.Attributes.TypeID % 10U - 1U);
                int num2 = (int)(entity.Attributes.TypeID / 10U - 1U);
                if (entity.Attributes.TypeID >= 1000U || entity.Attributes.TypeID <= 10U)
                {
                    result = num * 2 + XSingleton<XCommon>.singleton.RandomInt(0, 2);
                }
                else
                {
                    result = num * 2 + num2;
                }
            }
            return result;
        }

        // Token: 0x0600A5F6 RID: 42486 RVA: 0x001CF514 File Offset: 0x001CD714
        public List<uint> GetAssistSkillList(GameObject go, int profIndex)
        {
            
              List<uint> list = new List<uint>();
              List<string> list2 = new List<string>();
                //zcg 
//             XEntity entity = XSingleton<XEntityMgr>.singleton.GetEntity(ulong.Parse(go.transform.name));
//             SkillCombo.RowData rowData = XArenaDocument.SkillComboTable.Table[profIndex + 6];
//             if (rowData.nextskill0 != "")
//             {
//                 list2.Add(rowData.nextskill0);
//             }
//             if (rowData.nextskill1 != "")
//             {
//                 list2.Add(rowData.nextskill1);
//             }
//             if (rowData.nextskill2 != "")
//             {
//                 list2.Add(rowData.nextskill2);
//             }
//             if (rowData.nextskill3 != "")
//             {
//                 list2.Add(rowData.nextskill3);
//             }
//             if (rowData.nextskill4 != "")
//             {
//                 list2.Add(rowData.nextskill4);
//             }
//             for (int i = 0; i < list2.Count; i++)
//             {
//                 for (int j = 0; j < entity.SkillMgr.SkillOrder.Count; j++)
//                 {
//                     XSkillCore xskillCore = entity.SkillMgr.SkillOrder[j] as XSkillCore;
//                     if (xskillCore != null && xskillCore.Soul.Name == list2[i])
//                     {
//                         list.Add(xskillCore.ID);
//                         break;
//                     }
//                 }
//             }
            return list;
        }

        // Token: 0x0600A5F7 RID: 42487 RVA: 0x001CF6A8 File Offset: 0x001CD8A8
        public List<uint> GetStartSkillList(GameObject go, int prof)
        {
            List<uint> list = new List<uint>();
            List<string> list2 = new List<string>();
            //zcg 
//             XEntity entity = XSingleton<XEntityMgr>.singleton.GetEntity(ulong.Parse(go.transform.name));
//             SkillCombo.RowData rowData = XArenaDocument.SkillComboTable.Table[prof];
//             if (rowData.nextskill0 != "")
//             {
//                 list2.Add(rowData.nextskill0);
//             }
//             if (rowData.nextskill1 != "")
//             {
//                 list2.Add(rowData.nextskill1);
//             }
//             if (rowData.nextskill2 != "")
//             {
//                 list2.Add(rowData.nextskill2);
//             }
//             if (rowData.nextskill3 != "")
//             {
//                 list2.Add(rowData.nextskill3);
//             }
//             if (rowData.nextskill4 != "")
//             {
//                 list2.Add(rowData.nextskill4);
//             }
//             for (int i = 0; i < list2.Count; i++)
//             {
//                 if (entity.SkillMgr.GetPhysicalSkill().Soul.Name == list2[i])
//                 {
//                     list.Add(entity.SkillMgr.GetPhysicalSkill().ID);
//                     break;
//                 }
//                 for (int j = 0; j < entity.SkillMgr.SkillOrder.Count; j++)
//                 {
//                     XSkillCore xskillCore = entity.SkillMgr.SkillOrder[j] as XSkillCore;
//                     if (xskillCore != null && xskillCore.Soul.Name == list2[i])
//                     {
//                         list.Add(xskillCore.ID);
//                         break;
//                     }
//                 }
//             }
            return list;
        }

        // Token: 0x0600A5F8 RID: 42488 RVA: 0x001CF880 File Offset: 0x001CDA80
        public bool DetectEnimyInSight(XEntity entity)
        {
            List<XEntity> opponent = XSingleton<XEntityMgr>.singleton.GetOpponent(entity);
            for (int i = 0; i < opponent.Count; i++)
            {
                //bool flag = !XEntity.ValideEntity(opponent[i]) || opponent[i].IsPuppet;
                if (/*!flag*/XEntity.ValideEntity(opponent[i]) && !opponent[i].IsPuppet)
                {
                    float sqrMagnitude = (opponent[i].EngineObject.Position - entity.EngineObject.Position).sqrMagnitude;
                    if (XSingleton<XCommon>.singleton.IsLess(sqrMagnitude, entity.AI.EnterFightRange * entity.AI.EnterFightRange))
                    {
                        entity.AI.NotifyAllyIntoFight(opponent[i]);
                        return true;
                    }
                }
            }
            return false;
        }
    }
}
